////////////////////////////////////////////////////////////////////////////
//
//  Crytek Engine Header File.
//  Copyright (C), Crytek Studios, 2010.
// -------------------------------------------------------------------------
//
//  Description: ScriptBind function from the IK Interaction Manager
//
// -------------------------------------------------------------------------
//  History:
//  Created:     Nov 12th, 2010 by Michelle Martin
//
////////////////////////////////////////////////////////////////////////////

#ifndef __SCRIPTBIND_IKINTERACTIONS_H__
#define __SCRIPTBIND_IKINTERACTIONS_H__

#if _MSC_VER > 1000
#pragma once
#endif

#include <IScriptSystem.h>
#include <ScriptHelpers.h>



class CIKInteractionManager;
struct SIKInteractionStartParameters;

class CScriptBind_IKInteractions : public CScriptableBase
{
public:
	CScriptBind_IKInteractions(ISystem* pSystem, CIKInteractionManager* pIKM);
	virtual ~CScriptBind_IKInteractions();

	void Release() { delete this; };

	virtual void GetMemoryUsage(ICrySizer *pSizer) const
	{
		pSizer->AddObject(this, sizeof(*this));
	}


	// public because the FlowGraph node will also use this (to avoid code duplication)
	static void ReadAditionalPropertiesFromEntity( IEntity* targetEntity, SIKInteractionStartParameters *interactionParams );


private:
	void RegisterGlobals();
	void RegisterMethods();

	int StartInteraction(IFunctionHandler* pH);

	int StopInteraction(IFunctionHandler* pH, int interactionId);

	int SetInteractionOffset(IFunctionHandler* pH, int interactionId, Vec3 pos, Vec3 rot);

private:
//	ISystem*       m_pSystem;
	IScriptSystem* m_pScriptSystem;
//	IEntitySystem* m_pEntitySystem;
	CIKInteractionManager* m_pIKManager;
};

#endif //__SCRIPTBIND_IKINTERACTIONS_H__
